home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
misc
/
montor.zip
/
MONSRC.ZIP
/
MONTOR.TXT
< prev
next >
Wrap
Text File
|
1993-09-26
|
43KB
|
1,308 lines
VERSION 2.00
Begin Form Form1
BackColor = &H00000000&
BorderStyle = 1 'Fixed Single
Caption = "MONTOR System Monitor"
ClientHeight = 5145
ClientLeft = 15
ClientTop = 825
ClientWidth = 9150
ForeColor = &H0000FFFF&
Height = 6075
Icon = 0
Left = -45
LinkTopic = "Form1"
MaxButton = 0 'False
ScaleHeight = 5145
ScaleWidth = 9150
Top = -45
Width = 9270
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 0
Left = 1680
Picture = MONTOR.FRX:0000
ScaleHeight = 3225
ScaleWidth = 720
TabIndex = 0
Tag = "100"
Top = 840
Width = 720
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:14A2
DragMode = 1 'Automatic
Height = 165
Index = 0
Left = 420
Picture = MONTOR.FRX:15EC
Top = 3000
Width = 300
End
Begin Image CurrValPtr
Height = 165
Index = 0
Left = 0
Picture = MONTOR.FRX:16EA
Top = 0
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 7
Left = 8280
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 7
TabStop = 0 'False
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 7
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:17E8
DragMode = 1 'Automatic
Height = 165
Index = 7
Left = 420
Top = 3000
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 6
Left = 7320
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 6
TabStop = 0 'False
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 6
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1932
DragMode = 1 'Automatic
Height = 165
Index = 6
Left = 420
Top = 3000
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 5
Left = 6360
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 5
TabStop = 0 'False
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 5
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1A7C
DragMode = 1 'Automatic
Height = 165
Index = 5
Left = 420
Top = 3000
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 4
Left = 5400
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 4
TabStop = 0 'False
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 4
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1BC6
DragMode = 1 'Automatic
Height = 165
Index = 4
Left = 420
Top = 3000
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 3
Left = 4440
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 3
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 3
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1D10
DragMode = 1 'Automatic
Height = 165
Index = 3
Left = 420
Top = 3000
Width = 300
End
End
Begin Timer Timer1
Interval = 2000
Left = 120
Top = 3480
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 2
Left = 3480
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 2
Tag = "100"
Top = 840
Width = 750
Begin Image CurrValPtr
Height = 165
Index = 2
Left = 0
Top = 0
Width = 300
End
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1E5A
DragMode = 1 'Automatic
Height = 165
Index = 2
Left = 420
Top = 3000
Width = 300
End
End
Begin PictureBox GaugeMain
AutoSize = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 0 'None
FillStyle = 0 'Solid
ForeColor = &H0000FFFF&
Height = 3225
Index = 1
Left = 2520
ScaleHeight = 3225
ScaleWidth = 750
TabIndex = 1
Tag = "100"
Top = 840
Width = 750
Begin Image WarnLevPtr
DragIcon = MONTOR.FRX:1FA4
DragMode = 1 'Automatic
Height = 165
Index = 1
Left = 420
Top = 3000
Width = 300
End
Begin Image CurrValPtr
Height = 165
Index = 1
Left = 0
Top = 0
Width = 300
End
End
Begin Shape Circ
BackColor = &H00000080&
BackStyle = 1 'Opaque
Height = 735
Index = 1
Left = 480
Shape = 3 'Circle
Top = 2760
Width = 735
End
Begin Shape Circ
BackColor = &H000000FF&
BackStyle = 1 'Opaque
Height = 735
Index = 0
Left = 480
Shape = 3 'Circle
Top = 1320
Width = 735
End
Begin Label RowLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "Warn At:"
ForeColor = &H00FFFFFF&
Height = 255
Index = 4
Left = 120
TabIndex = 46
Top = 4800
Width = 1335
End
Begin Label RowLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "Percent Free:"
ForeColor = &H00FFFFFF&
Height = 255
Index = 3
Left = 120
TabIndex = 45
Top = 4440
Width = 1335
End
Begin Label RowLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "Free:"
ForeColor = &H00FFFFFF&
Height = 255
Index = 2
Left = 120
TabIndex = 44
Top = 4080
Width = 1335
End
Begin Label RowLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "Max Value:"
ForeColor = &H00FFFFFF&
Height = 255
Index = 1
Left = 120
TabIndex = 43
Top = 480
Width = 1335
End
Begin Label RowLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "Resource:"
ForeColor = &H00FFFFFF&
Height = 255
Index = 0
Left = 120
TabIndex = 42
Top = 120
Width = 1335
End
Begin Label CurrValLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 7
Left = 8280
TabIndex = 29
Top = 4080
Width = 735
End
Begin Label CurrValLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 6
Left = 7320
TabIndex = 30
Top = 4080
Width = 735
End
Begin Label CurrValLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 5
Left = 6360
TabIndex = 31
Top = 4080
Width = 735
End
Begin Label CurrValLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 4
Left = 5400
TabIndex = 41
Top = 4080
Width = 735
End
Begin Label CurrValLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 3
Left = 4440
TabIndex = 40
Top = 4080
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 7
Left = 8280
TabIndex = 36
Top = 4440
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "Drive F:"
ForeColor = &H0000FFFF&
Height = 255
Index = 7
Left = 8280
TabIndex = 37
Top = 120
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 7
Left = 8280
TabIndex = 38
Top = 4800
Width = 735
End
Begin Label MaxValueLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "999,999k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 7
Left = 8280
TabIndex = 39
Top = 480
Width = 735
End
Begin Label MaxValueLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "999,999k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 6
Left = 7320
TabIndex = 35
Top = 480
Width = 735
End
Begin Label MaxValueLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "999,999k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 5
Left = 6360
TabIndex = 34
Top = 480
Width = 735
End
Begin Label MaxValueLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "999,999k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 4
Left = 5400
TabIndex = 33
Top = 480
Width = 735
End
Begin Label MaxValueLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "999,999k"
FontBold = -1 'True
FontItalic = 0 'False
FontName = "Arial"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H0000FFFF&
Height = 255
Index = 3
Left = 4440
TabIndex = 32
Top = 480
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 6
Left = 7320
TabIndex = 28
Top = 4800
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "Drive E:"
ForeColor = &H0000FFFF&
Height = 255
Index = 6
Left = 7320
TabIndex = 27
Top = 120
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 6
Left = 7320
TabIndex = 26
Top = 4440
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 5
Left = 6360
TabIndex = 25
Top = 4800
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "Drive D:"
ForeColor = &H0000FFFF&
Height = 255
Index = 5
Left = 6360
TabIndex = 24
Top = 120
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 5
Left = 6360
TabIndex = 23
Top = 4440
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 4
Left = 5400
TabIndex = 22
Top = 4800
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "Drive C:"
ForeColor = &H0000FFFF&
Height = 255
Index = 4
Left = 5400
TabIndex = 21
Top = 120
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 4
Left = 5400
TabIndex = 20
Top = 4440
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 3
Left = 4440
TabIndex = 19
Top = 4440
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "Memory"
ForeColor = &H0000FFFF&
Height = 255
Index = 3
Left = 4440
TabIndex = 18
Top = 120
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 3
Left = 4440
TabIndex = 17
Top = 4800
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 2
Left = 3480
TabIndex = 16
Top = 4800
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 1
Left = 2520
TabIndex = 15
Top = 4800
Width = 735
End
Begin Label WarnLabel
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "20%"
ForeColor = &H0000FFFF&
Height = 255
Index = 0
Left = 1560
TabIndex = 14
Top = 4800
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "User"
ForeColor = &H0000FFFF&
Height = 255
Index = 2
Left = 3480
TabIndex = 13
Top = 120
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "GDI"
ForeColor = &H0000FFFF&
Height = 255
Index = 1
Left = 2520
TabIndex = 12
Top = 120
Width = 735
End
Begin Label HeadingLab
Alignment = 2 'Center
BackColor = &H00000000&
Caption = "System"
ForeColor = &H0000FFFF&
Height = 255
Index = 0
Left = 1560
TabIndex = 11
Top = 120
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 2
Left = 3480
TabIndex = 10
Top = 4440
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 1
Left = 2520
TabIndex = 9
Top = 4440
Width = 735
End
Begin Label PercentLab
Alignment = 1 'Right Justify
BackColor = &H00000000&
Caption = "0%"
ForeColor = &H0000FFFF&
Height = 255
Index = 0
Left = 1560
TabIndex = 8
Top = 4440
Width = 735
End
Begin Menu mnu_Main
Caption = "&File"
Index = 0
Begin Menu mnu_File
Caption = "E&xit"
Index = 0
End
End
Begin Menu mnu_Main
Caption = "&Options"
Index = 1
Begin Menu mnu_Options
Caption = "&Jiggle pointers"
Checked = -1 'True
HelpContextID = 6
Index = 0
End
Begin Menu mnu_Options
Caption = "&Save Settings On Exit"
Checked = -1 'True
HelpContextID = 7
Index = 1
End
End
Begin Menu mnu_Main
Caption = "&Icon Display"
Index = 2
Begin Menu mnu_Icon
Caption = "&System"
HelpContextID = 1
Index = 0
End
Begin Menu mnu_Icon
Caption = "&GDI"
HelpContextID = 1
Index = 1
End
Begin Menu mnu_Icon
Caption = "&User"
HelpContextID = 1
Index = 2
End
Begin Menu mnu_Icon
Caption = "&Memory"
HelpContextID = 2
Index = 3
End
End
Begin Menu mnu_Main
Caption = "&Help"
Index = 4
Begin Menu mnu_Help
Caption = "&Contents"
Index = 0
End
Begin Menu mnu_Help
Caption = "&Search for Help On..."
Index = 1
End
Begin Menu mnu_Help
Caption = "&How to Use Help"
Index = 2
End
Begin Menu mnu_Help
Caption = "-"
Index = 3
End
Begin Menu mnu_Help
Caption = "&About Montor..."
Index = 4
End
End
End
Option Explicit
Dim TopAdj% ' distance of 100% mark from top of gauge
Dim GHeight! ' height of gauge - used in several routines
Dim WhichIcon% ' Tells which resource to show when iconic
Dim LineL%, LineR% ' Range of a click on gauge line
Sub ChangeWarn (ByVal Index%, ByVal Change%)
' Move a warning level pointer up or down by specified percent
WarnLevPtr(Index).Tag = WarnLevPtr(Index).Tag + Change
If WarnLevPtr(Index).Tag > 100 Then WarnLevPtr(Index).Tag = 100
If WarnLevPtr(Index).Tag < 0 Then WarnLevPtr(Index).Tag = 0
' Place the pointer and adjust the labels
PlaceWarnPtr Index
End Sub
Sub Form_Load ()
' If a previous instance is running, activate it instead
Dim SaveTitle As String * 40
If App.PrevInstance Then
SaveTitle$ = App.Title
App.Title = "... duplicate instance."
Form1.Caption = "... duplicate instance."
AppActivate SaveTitle$
SendKeys "% R", True
End
End If
' Initialize two variables used in calculating pointer positions.
' Gauge line starts and ends 7 pixels from top/bottom of bitmap.
TopAdj = 7 * Screen.TwipsPerPixelY
GHeight = 200 * Screen.TwipsPerPixelY
' Include gauges for up to four fixed disks. Use GetDriveType to
' check each possible drive letter - only monitor those whose type
' is DRIVE_FIXED
ActualGauges = 4
Dim N%, Disk As String * 2
N = 0
Do While (N < 26) And (ActualGauges < NumGauges)
If GetDriveType(N) = DRIVE_FIXED Then
GaugeMain(ActualGauges).TabStop = True
Disk = Chr$(N + 65) + ":"
HeadingLab(ActualGauges).Caption = "Drive " + Disk
' Tag for HeadingLab is disk NUMBER for disk size functions
HeadingLab(ActualGauges).Tag = N + 1
Load Form1.mnu_Icon(ActualGauges)
Form1.mnu_Icon(ActualGauges).Caption = "Drive &" + Disk
Form1.mnu_Icon(ActualGauges).Visible = True
Form1.mnu_Icon(ActualGauges).HelpContextID = 3
ActualGauges = ActualGauges + 1
End If
N = N + 1
Loop
' Shrink the form to chop off any unused drive gauges
Width = GaugeMain(ActualGauges - 1).Left
Width = Width + GaugeMain(ActualGauges - 1).Width
Width = Width + (16 * Screen.TwipsPerPixelX)
LoadFromIni
Randomize
' To save EXE size, we store each picture ONCE in the EXE and
' copy it to the other elements of the same control array.
Dim X%
X = GaugeMain(0).Width - WarnLevPtr(0).Width
For N = 0 To ActualGauges - 1
CurrValPtr(N).Picture = CurrValPtr(0).Picture
WarnLevPtr(N).Picture = WarnLevPtr(0).Picture
WarnLevPtr(N).DragIcon = WarnLevPtr(0).DragIcon
GaugeMain(N).Picture = GaugeMain(0).Picture
PlaceWarnPtr N
Next N
' Get the total system memory
Dim mmi As tagMemManInfo
mmi.Size = MMIsize
Dim Success%
Success = MemManInfo(mmi)
GaugeMain(3).Tag = mmi.TotalPages + mmi.SwapFilePages
GaugeMain(3).Tag = GaugeMain(3).Tag * mmi.PageSize
MaxValueLab(3).Caption = MegaOrKilo(GaugeMain(3).Tag)
' Get the size of each fixed drive
For N = 4 To ActualGauges - 1
GaugeMain(N).Tag = GetDiskSize(HeadingLab(N).Tag)
MaxValueLab(N).Caption = MegaOrKilo(GaugeMain(N).Tag)
Next N
' Set left and right boundaries of the area on each gauge that will
' be accepted as a click ON the gauge's vertical line.
LineL = GaugeMain(0).Width \ 2 - 60
LineR = LineL + 120
End Sub
Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)
SaveToIni
Cancel = 0
End Sub
Sub Form_Resize ()
' If iconic, indicate which resource is being displayed
If WindowState = 1 Then
Caption = "Monitor " + HeadingLab(WhichIcon).Caption
Else
Caption = "System Monitor"
End If
End Sub
Sub GaugeMain_DragDrop (Index As Integer, Source As Control, X As Single, Y As Single)
' Don't allow dropping onto a different gauge!
If Source.Index <> Index Then Exit Sub
' Adjust position to stay within 0-100%
If Y > TopAdj + GHeight Then Y = TopAdj + GHeight
If Y < TopAdj Then Y = TopAdj
' Calculate new percent based on new position
Source.Tag = (TopAdj + GHeight - Y) * 100 \ GHeight
' Place the pointer and adjust the labels
PlaceWarnPtr Index
End Sub
Sub GaugeMain_GotFocus (Index As Integer)
' Indicate the selected gauge by highlighting its warn label
WarnLabel(Index).BackColor = &H808080
End Sub
Sub GaugeMain_KeyUp (Index As Integer, KeyCode As Integer, Shift As Integer)
' When it receives an up or downarrow, the Picture Box tweaks
' the warning level up or down by one percent. When
' it receives PgUp or PgDn, it tweaks the level by five percent
Select Case KeyCode
Case KEY_UP
ChangeWarn ActiveControl.Index, 1
Case KEY_DOWN
ChangeWarn ActiveControl.Index, -1
Case KEY_PRIOR ' PgUp
ChangeWarn ActiveControl.Index, 5
Case KEY_NEXT ' PgDn
ChangeWarn ActiveControl.Index, -5
End Select
End Sub
Sub GaugeMain_LostFocus (Index As Integer)
' Indicate the unselected gauge by unhighlighting its warn label
WarnLabel(Index).BackColor = 0
End Sub
Sub GaugeMain_MouseUp (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
' If the user clicked on the line in the middle of the gauge...
If (X >= LineL) And (X <= LineR) Then
' If they clicked above warning pointer, raise it, else lower it
Dim Locat!
Locat = (TopAdj + GHeight - Y) * 100 \ GHeight
If Locat > WarnLevPtr(Index).Tag Then
ChangeWarn Index, 1
Else
ChangeWarn Index, -1
End If
End If
End Sub
Sub HeadingLab_Click (Index As Integer)
' Click on label at gauge top to display that resource when iconic.
SelectIconReport (Index)
End Sub
Sub LoadFromIni ()
' Load program options from MONTOR.INI
mnu_Options(0).Checked = GetPrivateProfileInt("Options", "Jiggle Pointers", True, "MONTOR.INI")
mnu_Options(1).Checked = GetPrivateProfileInt("Options", "Save Settings", True, "MONTOR.INI")
Dim IconRpt%
IconRpt = GetPrivateProfileInt("Icon Display", "Icon", 0, "MONTOR.INI")
SelectIconReport (IconRpt)
' Get warning level for each gauge, or default of 20%
Dim N%
For N = 0 To ActualGauges - 1
WarnLevPtr(N).Tag = GetPrivateProfileInt("Warning Levels", "Gauge" + Str$(N), 20, "MONTOR.INI")
Next N
End Sub
Function MegaOrKilo$ (ByVal Amount&)
' Display below 1 million kilobytes as k, greater as M
Const Kilo% = &H400
Const Mega& = &H100000
If Amount >= 1000000 * Kilo Then
MegaOrKilo = Format$(Amount \ Mega, "###,###,###") + "M"
Else
MegaOrKilo = Format$(Amount \ Kilo, "###,###") + "k"
End If
End Function
Sub mnu_File_Click (Index As Integer)
' Note that form2 (About box) and form3 (warning dialog)
' are unloaded after each use.
Unload Form1
End Sub
Sub mnu_Help_Click (Index As Integer)
' WinHelp and WinHelpByNum are declared in MONTOR.BAS. VB programs
' have automatic context-sensitive help, but they need these API
' functions for menu-selected help.
Dim Success%
Select Case Index
Case 0
Success = WinHelpByNum(Form1.hWnd, App.HelpFile, HELP_CONTENTS, 0)
Case 1
Success = WinHelp(Form1.hWnd, App.HelpFile, HELP_PARTIALKEY, "")
Case 2
Success = WinHelpByNum(Form1.hWnd, App.HelpFile, HELP_HELPONHELP, 0)
Case 4
Form2.Show MODAL
Unload Form2
End Select
End Sub
Sub mnu_Icon_Click (Index As Integer)
' Select name from icon menu to display that resource when iconic.
SelectIconReport (Index)
End Sub
Sub mnu_Options_Click (Index As Integer)
' Information about whether the two Options menu items are checked
' is simply stored in Checked property of the menu items.
mnu_Options(Index).Checked = Not mnu_Options(Index).Checked
End Sub
Sub PlaceWarnPtr (ByVal Index%)
' The warning level pointer's tag contains the new percent - now
' adjust the labels and place the pointer to match that percent.
' Adjust the Warn At caption
WarnLabel(Index).Caption = Str$(WarnLevPtr(Index).Tag) + "%"
' The gauge is exactly 200 pixels high
Dim NewY%
' Set NewY to the *pixel* height corresponding to the percentage
NewY = ((98 - WarnLevPtr(Index).Tag) * 2) - 1
' Convert NewY to twips (VB's unit of screen measurement)
NewY = NewY * Screen.TwipsPerPixelY
' Adjust to start at the top of the gauge line
NewY = NewY + TopAdj
WarnLevPtr(Index).Move WarnLevPtr(Index).Left, NewY
WarnLabel(Index).Tag = False
End Sub
Sub SaveToIni ()
' Write Save Settings option to MONTOR.INI; write the rest of the
' options only if Save Settings is TRUE
Dim Success%
Success% = WritePrivateProfileString("Options", "Save Settings", mnu_Options(1).Checked, "MONTOR.INI")
If mnu_Options(1).Checked Then
Success% = WritePrivateProfileString("Options", "Jiggle Pointers", mnu_Options(0).Checked, "MONTOR.INI")
Success% = WritePrivateProfileString("Icon Display", "Icon", Str$(WhichIcon), "MONTOR.INI")
Dim N%
For N = 0 To ActualGauges - 1
Success% = WritePrivateProfileString("Warning Levels", "Gauge" + Str$(N), WarnLevPtr(N).Tag, "MONTOR.INI")
Next N
End If
End Sub
Sub SelectIconReport (ByVal Index%)
' Un-check old selected item & set its label's background to black
mnu_Icon(WhichIcon).Checked = False
HeadingLab(WhichIcon).BackColor = 0
' Check new selected item & set its label's background to gray
mnu_Icon(Index).Checked = True
HeadingLab(Index).BackColor = &H808080
WhichIcon = Index
End Sub
Sub Timer1_Timer ()
' This method is called about every two seconds - it updates all of
' the gauges and warns if any have dropped below the minimum. If
' MONTOR is iconic, it draws the icon.
' Set current values for the system resource gauges
Dim shi As TagSysHeapInfo
shi.Size = SHIsize
Dim Success%
Success = SystemHeapInfo(shi)
CurrValPtr(2).Tag = shi.UserFreePercent
CurrValPtr(1).Tag = shi.GDIFreePercent
If shi.UserFreePercent < shi.GDIFreePercent Then
CurrValPtr(0).Tag = shi.UserFreePercent
Else
CurrValPtr(0).Tag = shi.GDIFreePercent
End If
' Set and display current value for the memory gauge
CurrValPtr(3).Tag = GetFreeSpace(0)
CurrValLab(3).Caption = MegaOrKilo(CurrValPtr(3).Tag)
' Set and display current value for disk space gauges
Dim N%
For N = 4 To ActualGauges - 1
CurrValPtr(N).Tag = GetDiskFree(HeadingLab(N).Tag)
CurrValLab(N).Caption = MegaOrKilo(CurrValPtr(N).Tag)
Next N
' Redisplay the pointers
Dim Locat!, Percent!
Dim NewCVY%
For N = 0 To ActualGauges - 1
' Calculate the current percentage
NewCVY = (100 * CurrValPtr(N).Tag) / GaugeMain(N).Tag
PercentLab(N).Caption = Str$(NewCVY) + "%"
NewCVY = ((98 - NewCVY) * 2) - 1
NewCVY = NewCVY * Screen.TwipsPerPixelY
NewCVY = NewCVY + TopAdj
CurrValPtr(N).Move 0, NewCVY
Next N
' If the "Jiggle Pointers" option is checked...
If mnu_Options(0).Checked Then
' Blink the "pulse" circles
Dim TempCol&
TempCol = Circ(0).BackColor
Circ(0).BackColor = Circ(1).BackColor
Circ(1).BackColor = TempCol
' Jiggle the pointers
Dim NewY%
For N = 0 To ActualGauges - 1
Select Case Rnd
Case 0 To .2
NewY = CurrValPtr(N).Top + Screen.TwipsPerPixelY
CurrValPtr(N).Move CurrValPtr(N).Left, NewY
Case .2 To .4
NewY = CurrValPtr(N).Top - Screen.TwipsPerPixelY
CurrValPtr(N).Move CurrValPtr(N).Left, NewY
End Select
Next N
End If
' Check if any warnings are necessary
For N = 0 To ActualGauges - 1
Percent = (CurrValPtr(N).Tag * 100) / GaugeMain(N).Tag
If Percent < WarnLevPtr(N).Tag Then
If Not WarnLabel(N).Tag Then
Select Case N
Case 0 To 2
' Normally you would assign WnTx's value using one long
' program line. Here it's built up gradually, so as to
' make it easier to publish the source code.
WnTx = "Free " + HeadingLab(N).Caption + " resources have"
WnTx = WnTx + " dropped below" + Str$(WarnLevPtr(N).Tag)
WnTx = WnTx + "%." + Chr$(13) + Chr$(13) + "Even if you "
WnTx = WnTx + "have plenty of memory free, you will not "
WnTx = WnTx + "be able to run many more programs. "
WnTx = WnTx + "Consider closing one or more programs."
WarnHelp = 1
Case 3
WnTx = "Free memory has dropped below"
WnTx = WnTx + Str$(WarnLevPtr(N).Tag) + "%." + Chr$(13)
WnTx = WnTx + Chr$(13) + "Consider closing one or more "
WnTx = WnTx + "programs."
WarnHelp = 2
Case 4 To ActualGauges
WnTx = "Free disk space on " + HeadingLab(N) + " has "
WnTx = WnTx + "dropped below" + Str$(WarnLevPtr(N).Tag)
WnTx = WnTx + "%." + Chr$(13) + Chr$(13) + "Consider "
WnTx = WnTx + "using File Manager to delete any files "
WnTx = WnTx + "that are no longer needed."
WarnHelp = 3
End Select
MessageBeep MB_ICONSTOP
Form3.Show MODAL
Unload Form3
WarnLabel(N).Tag = True
End If
Else
WarnLabel(N).Tag = False
End If
Next N
' If MONTOR is iconic, draw the icon
If WindowState = 1 Then
' fill whole area with black
Line (0, 0)-(ScaleWidth, ScaleHeight), 0, BF
' draw gauge-line near right side
Line (ScaleWidth - 60, 0)-(ScaleWidth - 60, ScaleHeight)
' set location for writing percent value
CurrentX = 2 * Screen.TwipsPerPixelX
Percent = (CurrValPtr(WhichIcon).Tag) / GaugeMain(WhichIcon).Tag
' Set Y position to avoid printing on light/dark boundary
If Percent < .5 Then
CurrentY = Screen.TwipsPerPixelY
Else
CurrentY = ScaleHeight \ 2
End If
Print PercentLab(WhichIcon).Caption
' XOR the portion corresponding to free percentage
DrawMode = 7
Dim Y!
Y = (1 - Percent) * (ScaleHeight)' - (2 * TopAdj))
Line (0, Y)-(ScaleWidth, ScaleHeight), &HFFFFFF, BF
DrawMode = 13
End If
End Sub
Sub WarnLabel_Click (Index As Integer)
GaugeMain(Index).SetFocus
End Sub